SDN 环境配置及问题解决:Mininet + Ryu + OpenFlow 1.3 + Ubuntu 20.04

您所在的位置:网站首页 ncclient manager timeout SDN 环境配置及问题解决:Mininet + Ryu + OpenFlow 1.3 + Ubuntu 20.04

SDN 环境配置及问题解决:Mininet + Ryu + OpenFlow 1.3 + Ubuntu 20.04

#SDN 环境配置及问题解决:Mininet + Ryu + OpenFlow 1.3 + Ubuntu 20.04| 来源: 网络整理| 查看: 265

项目需要,指定了软件版本:

Mininet - 2.3

Ryu - 4.34

Ovs - 2.9.8

Openflow - 1.3

Mininet

没有 git 先安装 git:sudo apt install git

第三行的 -n3v2.9.8 是指定安装 mininet 核心功能、OpenFlow 1.3、OpenvSwitch 2.9.8。

git clone git://github.com/mininet/mininet cd mininet/util sudo ./install.sh -n3v2.9.8

如果报错可能要更新一下:

sudo apt update sudo apt upgrade

输入 sudo mn 检验是否安装成功:

wu@wu-ubuntu:~$ sudo mn *** Creating network *** Adding controller *** Adding hosts: h1 h2 *** Adding switches: s1 *** Adding links: (h1, s1) (h2, s1) *** Configuring hosts h1 h2 *** Starting controller c0 *** Starting 1 switches s1 ... *** Starting CLI: mininet>

输入 exit 即可退出mininet。

这里若报错尝试运行下 sudo apt-get install mininet

Ryu

没有 pip3 先安装pip3

sudo apt update apt install python3-pip

pip3 -V 可查看 pip 版本和位置。如果因为 Python2 和 Python3 共存导致无法定位到 pip3,运行以下命令:

sudo python3 -m pip install --upgrade pip

pip 换清华源:

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/ pip 安装 Ryu

按照 github 上的官方说明,如果安装过程中有错误信息,需要先安装 Python 依赖包:

sudo apt install gcc python-dev libffi-dev libssl-dev libxml2-dev libxslt1-dev zlib1g-dev

直接 pip 安装 ryu 4.34

sudo pip3 install ryu==4.34

查看版本是否成功:

ryu --version

功能选配:ryu 的一些功能需要额外的包。

OF-Config 需要 lxml 和 ncclient

NETCONF 需要 paramiko

BGP speaker(SSH 控制台)需要 paramiko

Zebra 协议服务(数据库)需要 SQLAlchemy

如果要使用这些功能,使用安装命令:

sudo pip install -r tools/optional-requires git 安装 Ryu

发现用 pip 装的 Ryu 没有 GUI 的 HTML 文件,还是得用 git 装。

git clone git://github.com/osrg/ryu.git sudo pip install -r tools/pip-requires cd ryu sudo python setup.py install 启动Ryu

直接在任意路径启动 sudo ryu-manager 应该也是可以的,进入安装文件夹不是必须。不过如果要运行某个应用就需要先进 app 文件夹了。

通过命令:

sudo pip show ryu

可以看到 ryu 安装路径:Location: /usr/local/lib/python3.8/dist-packages

cd 进入安装文件夹 cd /usr/local/lib/python3.8/dist-packages/ryu,可以看到下面的文件:

wu@wu-ubuntu:/usr/local/lib/python3.8/dist-packages/ryu$ ls app cfg.py contrib exception.py hooks.py lib ofproto services topology base cmd controller flags.py __init__.py log.py __pycache__ tests utils.py

cd app 进入 app 文件夹,运行 ryu 管理:

sudo ryu-manager

我这里报错:

ImportError: cannot import name 'ALREADY_HANDLED' from 'eventlet.wsgi' (/home/wu/.local/lib/python3.8/site-packages/eventlet/wsgi.py)

查了下,原因是 eventlet 版本问题。使用 pip show eventlet 命令查看版本为 Version: 0.33.0

删除重新安装 0.30.2 版本:

sudo pip uninstall eventlet sudo pip install eventlet==0.30.2

再次运行成功。

wu@wu-ubuntu:~$ sudo ryu-manager loading app ryu.controller.ofp_handler instantiating app ryu.controller.ofp_handler of OFPHandler

由于用 pip 安装,全局都可以使用 ryu-manager 命令(也许吧?)

测试

进入到 ryu/app文件夹,ls查看内容:

bmpstation.py __pycache__ simple_switch_12.py simple_switch.py cbench.py rest_conf_switch.py simple_switch_13.py simple_switch_rest_13.py conf_switch_key.py rest_firewall.py simple_switch_14.py simple_switch_snort.py example_switch_13.py rest_qos.py simple_switch_15.py simple_switch_stp_13.py gui_topology rest_router.py simple_switch_igmp_13.py simple_switch_stp.py __init__.py rest_topology.py simple_switch_igmp.py simple_switch_websocket_13.py ofctl rest_vtep.py simple_switch_lacp_13.py wsgi.py ofctl_rest.py simple_monitor_13.py simple_switch_lacp.py ws_topology.py

这个文件夹下就是各种应用,可以自己编辑,可使用ryu-manager simple_switch.py命令指定运行应用为 simple_switch.py,来检验一下ryu是否安装成功。

打开另一个终端,运行mininet。

sudo mn --controller=remote

可以在 ryu 终端看到运行成功。 在这里插入图片描述感觉 pip 安装的 app 文件夹不太好找,git 下来自己安装ryu的可能方便点?或者尝试把文件直接移出去?

尝试了下新建路径 ~/RyuApp,把 ryu/app 里的 simple_switch.py 文件单独复制到此路径下,然后在此路径下运行该文件 ryu-manager simple_switch.py 发现也能正常运行。那应该 app 里的文件可以放到任何位置都能运行。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3